package gormdemo

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

//go语言中使用结构体来表示实体类
type Product struct {
	Code  string
	Price uint
}

func (p Product) TableName() string {
	return "product"
}
func main() {
	//连接数据库
	db, err := gorm.Open(
		mysql.Open("root:9746@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=local"), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	// 创建表
	db.Create(&Product{Code: "D42", Price: 100})

	// 读取
	var product Product
	//首先找到按主键排序的第一条记录，匹配给定条件 conds
	db.First(&product, 1)
	db.First(&product, "code = ?", "D42") // find product with code D42

	// 指定模型更新指定的属性
	db.Model(&product).Update("Price", 200)
	//更新使用回调更新属性。值必须是结构体或映射
	db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fields
	db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

	// 删除指定的信息
	db.Delete(&product, 1)
}
